home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 2
/
Amiga Tools 2.iso
/
amiga-magazin-pd
/
11-94-6
/
xass 64
/
xass 1.0
/
source
/
transfer.src
< prev
next >
Wrap
Text File
|
1995-03-09
|
7KB
|
198 lines
; ***************************************
; *** ***
; *** 6510-Developers-Packet V1.0 ***
; *** Empfangsprogramm "Transfer" ***
; *** ***
; *** programmiert von ***
; *** Christian Krenner ***
; *** (C)opyright 1992 ***
; *** Markt & Technik Verlag AG ***
; *** ***
; ***************************************
; !!! Unbedingt "CONVERT:C64.con" als Konvertierungstabelle verwenden !!!
; Logische Laufwerke müssen definiert sein (Assignthem).
; Als Dateinamen bei der Assemblierung dann "SOURCE:Transfer.src" angeben.
; Assemblierung erfolgt in die Datei "OBJECT:Transfer.obj".
; Braucht die Dateien "INCLD:Kernel-ROM.inc" und
; "INCLD:CIA.inc"
; **********************
; *** Vorbereitungen ***
; **********************
.base 2049, "OBJECT:Transfer.obj"
;Startadresse = Basicstart
.include "INCLD:Kernel-ROM.inc"
.include "INCLD:CIA.inc"
; *************************
; *** Labels und Makros ***
; *************************
STROUT .equal $ab1e ;Wäre auch in "INCLD:Basic-ROM.inc",
INLIN .equal $a560 ;aber so geht's schneller.
LINPRT .equal $bdcd
Use .equal $fb ;unbenutztes Zeropage-Register
.macro PrintText,1 ;Text ausgeben, Param 1: Textadresse
lda #<?0
ldy #>?0
jsr STROUT
.endmacro
; ******************
; *** Basic-Kopf ***
; ******************
.word BK_lp1
.word 1992
.byte 158
; .ascii " 2077 (c)1992 m&t ag"
.ascii " 2077 (c)1994 MMedia"
BK_lp1 .byte 0,0,0
; ************************
; *** Benutzereingaben ***
; ************************
Start jsr CINT ;Bildschirmreset
lda #0 ;Anzahl auf 0 setzen
sta Anzahl
sta Anzahl+1
PrintText Text1 ;Text ausgeben
II_lp2 jsr INLIN ;Filenamen von Tastatur
PrintText Text2 ;Text ausgeben
ldx #0 ;Länge des Namen ermitteln
II_lp3 lda $200,x
beq II_lp4
sta Name+2,x
inx
bne II_lp3
II_lp4 sta Name+2,x
inx
inx
stx Use ;Länge merken
lda #'s ;Scratch-Kommando
sta Name
lda #1 ;Fileparameter setzen
ldx #8
ldy #15
jsr SETFLSV
lda Use ;Namen übergeben
ldx #<Name
ldy #>Name
jsr SETNAMV
jsr OPENV ;File löschen
lda #1
jsr CLOSEV ;File schließen
lda #'0 ;nicht mehr scratchen
sta Name
lda #1 ;Fileparameter setzen
ldx #8
ldy #1
jsr SETFLSV
lda Use ;Namen übergeben
ldx #<Name
ldy #>Name
jsr SETNAMV
jsr OPENV ;File öffnen
PrintText Text3 ;Text ausgeben
ldx #1 ;File 1 für Ausgabe setzen
jsr CHKOUTV
; ***********************************
; *** Übertragung und Speicherung ***
; ***********************************
; *** auf erstes Byte warten ***
sei ;IRQ sperren
US_lp2 lda #%00010000 ;Maske für Bit 4
bit CIA2+ICR ;Auf anliegendes Byte testen
bne US_lp1 ;Byte da -> Byte speichern
lda CIA2+PRB ;Signal ausgeben
jmp US_lp2 ;weiter warten
; *** Bytes bis Timeout übertragen ***
US_lp3 ldx #$40 ;TimeOut-Zähler High
ldy #0 ;TimeOut-Zähler Low
US_lp4 lda #%00010000 ;Maske für Bit 4
bit CIA2+ICR ;auf anliegendes Byte testen
bne US_lp1 ;Byte da -> speichern
dey ;kein Byte -> Zähler erniedrigen
bne US_lp4 ;noch nicht 0 -> warten
dex ;Zähler (high) erniedrigen
bne US_lp4 ;noch nicht 0 -> weiter warten
jmp EN_lp1 ;sonst beenden
US_lp1 lda CIA2+PRB ;Byte vom Port holen
cli ;IRQ erlauben
jsr CHROUTV ;Zeichen speichern
jsr STOPV ;auf Stop prüfen
beq EN_lp1 ;gedrückt -> beenden
lda Anzahl ;Anzahl erhöhen
clc
adc #1
sta Anzahl
lda Anzahl+1
adc #0
sta Anzahl+1
sei ;IRQ wieder sperren
jmp US_lp3 ;weiter empfangen
; ***************************
; *** Übertragung beenden ***
; ***************************
EN_lp1 cli ;IRQ zulassen
jsr CLRCHNV ;Clear Channels
lda #1 ;File schließen
jsr CLOSEV
ldx Anzahl ;letzten Text ausgeben
lda Anzahl+1
jsr LINPRT
PrintText Text4
lda #0
sta 198
EN_lp2 lda 198
beq EN_lp2
lda #0
sta 198
jmp Start ;Neustart
; *************
; *** Texte ***
; *************
Text1 .byte 17,17,17
.ascii " 6510-developers-packet transfer"
.byte 13,13
.ascii "name : "
.byte 0
Text2 .byte 13,13
.ascii "eroeffne datei..."
.byte 13,0
Text3 .ascii "uebertragung laeuft..."
.byte 13,0
Text4 .ascii " bytes empfangen !"
.byte 13,13
.ascii "taste druecken !"
.byte 13,0
Anzahl .word 0
Name .ascii "0:"